import fs from "node:fs";
import path from "node:path";

export function pruneOldFilesInDir(dirpath: string, maxAgeMs: number): number {
  if (!fs.existsSync(dirpath)) {
    return 0; // Nothing to prune
  }

  let deletedFileCount = 0;
  for (const entryName of fs.readdirSync(dirpath)) {
    const entryPath = path.join(dirpath, entryName);

    const stat = fs.statSync(entryPath);
    if (stat.isDirectory()) {
      deletedFileCount += pruneOldFilesInDir(entryPath, maxAgeMs);
    } else if (stat.isFile() && Date.now() - stat.mtimeMs > maxAgeMs) {
      fs.unlinkSync(entryPath);
      deletedFileCount += 1;
    }
  }

  // if all files are deleted, delete the directory
  if (fs.readdirSync(dirpath).length === 0) {
    fs.rmdirSync(dirpath);
  }
  return deletedFileCount;
}
